const { app, BrowserWindow, Menu } = require("electron");
const { autoUpdater } = require("electron-updater");
const isDevelopment = process.env.NODE_ENV !== "production";
const path = require("path");
Menu.setApplicationMenu(null);
// 该方法创建一个窗口
const createWindow = async () => {
  // 初始化浏览器窗口设置参数
  const win = new BrowserWindow({
    width: 1500,
    height: 1200,
    minWidth: 1200,
    minHeight: 1000,
  });
  // 加载页面
  // win.loadURL("http://localhost:3000");
  // win.loadFile(path.join(__dirname, "../dist", "index.html"));
  // console.log(__dirname);
  await win.loadFile(path.resolve(__dirname, "../dist/index.html")); // 新增
  // 加入此行，开启自动化更新
  // await autoUpdater.checkForUpdatesAndNotify();
};

//在 Electron 中，只有在 app 模块的 ready 事件被激发后才能创建浏览器窗口。您可以通过使用 app.whenReady() API来监听此事件。在whenReady()成功后调用createWindow()。
app.whenReady().then(() => {
  createWindow();
  autoUpdater.checkForUpdatesAndNotify();
  // 当 Linux 和 Windows 应用在没有窗口打开时退出了，macOS 应用通常即使在没有打开任何窗口的情况下也继续运行，并且在没有窗口可用的情况下激活应用时会打开新的窗口。
  // 为了实现这一特性，监听 app 模块的 activate 事件。如果没有任何浏览器窗口是打开的，则调用 createWindow() 方法。
  // 因为窗口无法在 ready 事件前创建，你应当在你的应用初始化后仅监听 activate 事件。 通过在您现有的 whenReady() 回调中附上您的事件监听器来完成这个操作。
  app.on("activate", () => {
    if (BrowserWindow.getAllWindows().length === 0) createWindow();
  });
});
// 窗口全部关闭时执行退出APP
app.on("window-all-closed", () => {
  if (process.platform !== "darwin") app.quit();
  console.log("window-all-closed:窗口全部关闭，程序退出！");
});
